<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>11-函数作为参数</title>
</head>
<body>
    <script>
          /* 
            函数的参数，数据类型没有限制。
            既然没有限制，参数也可以是一个函数。
            每个 JavaScript 函数实际上都是一个 Function 对象(实例)。
            instanceof ： 判断一个对象是否为类的一个实例(实例)。

            callbak ：回调函数。
            回调函数: 回头调用的函数，符合了某个条件才调用的函数。
                1. 定时器
                2. 事件
                3. load

            总结: 函数可以作为函数的参数。    
        */

        // 函数的形参可以是对象(占位符)   
        function getInfo(stu) {
            console.log(stu.age);
            console.log(stu.name);
        }
        let stu = {
            age: 10,
            name: "coco"
        }
        getInfo(stu);

        function cook(food, callback) {
            console.log('我爱吃' + food);
            if (food == "火锅") {
                callback();
            }
        }

        function fn() {
            console.log('今晚吃鸡');
        }
        cook('火锅1', fn);


        //  第二种
        function cook(hero, callBack){
            console.log(hero + '买鱼');
            console.log(hero + '烤鱼');
            console.log(hero + '吃鱼');
            callBack();
        }
        cook('张飞',callBack);


        console.log(typeof cook);
        console.log(cook instanceof Function);

        function callBack(){
            console.log('收拾餐具，出去遛弯');
        }
    </script>
</body>
</html>